// gpio.h
#ifndef __GPIO_H__
#define __GPIO_H__


typedef enum
{
    GPIO_PORT_1=0x01,
    GPIO_PORT_3=0x03,
    GPIO_PORT_5=0x05
} GPIO_Port;
typedef enum
{
    GPIO_PIN_0 = 0x00,
    GPIO_PIN_1,
    GPIO_PIN_2,
    GPIO_PIN_3,
    GPIO_PIN_4,
    GPIO_PIN_5,
    GPIO_PIN_6,
    GPIO_PIN_7
} GPIO_Pin;

typedef enum
{
    GPIO_MODE_QUASI_BIDIRECTIONAL,
    GPIO_MODE_PUSH_PULL,
    GPIO_MODE_INPUT_ONLY,
    GPIO_MODE_OPEN_DRAIN
} GPIO_Mode;
typedef enum
{
    GPIO_STATE_LOW = 0,
    GPIO_STATE_HIGH = 1,
} GPIO_State;

void GPIO_Init(GPIO_Port port, GPIO_Pin pin, GPIO_Mode mode);
void GPIO_Set(GPIO_Port port, GPIO_Pin pin, GPIO_State state);
GPIO_State GPIO_Get(GPIO_Port port, GPIO_Pin pin);

#endif